package com.project.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import	com.project.entity.*;
public interface ProjectManage {
	
	//获取所有的项目
	public List<ProjectManagement> getAllProject(Integer followup , Integer start, Integer end);
	
	//获取符合条件的项目
	public List<ProjectManagement> getAllResultingProject(Map<String,Object> map);
	
	//获取符合条件的项目的数目
	public int countAllResultingProject(Map<String,Object> map);
	
	//获取所有项目的总数目
	public int	countAllProject();
	
	//获取所有普通管理员
	public List<GeneralManager> getAllGeneralManager(Integer start,Integer end);
	
	//获取所有普通管理员的数目	
	public int countAllGeneralManager();
	
	//获取符合条件的项目监督信息
	public List<ProjectSuperVisoryManagement> getAllResultingProjectSupervise(Map<String,Object> map);
	
	//获取符合条件的项目监督信息的数目
	public int countAllResultingProjectSupervise(Map<String,Object> map);
	
	//获取符合条件的发布提醒事件
	public List<AlertEvent> getAllResultingAlertEventPub(Map<String,Object>map);
	
	//获取符合条件的发布提醒事件数目
	public int countAllResultingAlertEventPub(Map<String,Object>map);
	
	//获取符合条件的接收提醒事件
	public List<AlertEvent> getAllResultingAlertEventRec(Map<String,Object>map);
	
	//获取符合条件的接收提醒事件数目
	public int countAllResultingAlertEventRec(Map<String,Object>map);
	
	//更新事件已读状态
	public void updateAlertEventState(AlertEvent event,AlertEventExample example);
	
	//删除接收的提醒事件
	public void delAlertEventRec(Map<String,Object>map);
	
	//删除发布的提醒事件
	public void delAlertEventPub(Map<String,Object>map);
	
	//发布提醒事件
	public void publishAlertEvent(AlertEvent event);
	
	//修改项目跟进人
	public void changeProjectSupervise(ProjectSuperVisoryManagement projectSuperVisoryManagement,ProjectSuperVisoryManagementExample example);
	
	//修改项目跟进人
	public void changeFollowUpPerson(ProjectManagement projectManagement,ProjectManagementExample example);
	
	//修改监督管理跟进人
	public void changeSupervisoryFollowUpPerson(ProjectSuperVisoryManagement projectSuperVisoryManagement,ProjectSuperVisoryManagementExample example);
	
	//插入项目日志
	public void insertProjectDistributeLog(ProjectDistributeLog projectDistributeLog);
	
	//插入新项目记录
	public void insertProject(ProjectManagement projectManagement);
	
	//复合条件查询
	public List<ProjectManagement> multiConditionQuery(String type, String keyWord, String beginYear, String endYear);

	
}
